﻿using System;

/*
 * 创建人：
 * 
 * 时间：
 * 
 * 说明：
 * 
 * 
 * 修改说明：
 * 
 * 
 */


namespace ConsoleTest.ChapterFive
{
    public class Timer
    {
        public static void SystemTimer()
        {
            /*
             * 设置timer 的Elapsed事件的回调事件，定时器定时的引发他的Elapsed事件，这样回调方法会定时的被执行
             */

            //获取或者设置定时器引发Elapsed事件的时间间隔
            t1.Interval = 1000;
            t2.Interval = 2000;
            
            t1.Elapsed+=new System.Timers.ElapsedEventHandler(PeriodicTaskHandler);
            t2.Elapsed += new System.Timers.ElapsedEventHandler(PeriodicTaskHandler);
            t2.Elapsed += new System.Timers.ElapsedEventHandler(PeriodicTaskHandler);

            //通过设置Enabled属性，引发Elapsed事件

            t1.Start();
            t2.Start();
            System.Threading.Thread.Sleep(5000);
            System.Console.WriteLine("Timer stop!");
            t1.Stop();
            t2.Stop();
        }
        private static System.Timers.Timer t1 = new System.Timers.Timer();
        private static System.Timers.Timer t2 = new System.Timers.Timer();
        private static void PeriodicTaskHandler(object sender, System.Timers.ElapsedEventArgs e)
        {
            //第一个参数引用触发任务的定时器，几个定时器可以触发同一个方法，通过参数一区别它们
            string str = (sender == t1) ? "Timer-1 : " : "Timer-2  : ";
            //引发Elapsed事件的时间
            str += e.SignalTime.ToLongTimeString();
            System.Console.WriteLine(str+" run in thread:"+System.Threading.Thread.CurrentThread.ManagedThreadId);
        }

    }
}